#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

typedef int SLTDataType;

typedef struct SListNode
{
    SLTDataType data;
    struct SListNode* next;
}SLTNode;

//打印链表
void SLTPrint(SLTNode* phead);

//创建节点
SLTNode* SLTBuyNode(SLTDataType x);

//尾插法
void SLTPushBack(SLTNode** pphead,SLTDataType x);
//头插法
void SLTPushFront(SLTNode** pphead,SLTDataType x);

//头删法
void SLTPopFront(SLTNode** pphead);
//尾删法
void SLTPopBack(SLTNode** pphead);

//查找
SLTNode* SLTFind(SLTNode** pphead,SLTDataType x);

//指定位置前插入数据
void SLTInsert(SLTNode** pphead,SLTNode* pos,SLTDataType x);
//指定位置之后插入数据
void SLTInsertAfter(SLTNode* pos,SLTDataType x);

//删除pos节点
void SLTErase(SLTNode** pphead,SLTNode* pos);
//删除pos后的节点
void SLTEraseAfter(SLTNode* pos);

//销毁链表
void SListDestroy(SLTNode** pphead);
